Although electronic information networks of various kinds are all around us today, it is still not generally possible to guarantee that a given electronic information network will function properly for an extended period without error. Nor is it easy to ensure that a complex novel network configuration will function precisely as it was designed to function. Thus, it is often necessary to perform trouble shooting and repair on electronic information networks (either during live operation, or post-facto) to correct a network malfunction or misconfiguration.
Troubleshooting operational networks or debugging novel networking mechanisms is one of the fundamental challenges in networking. Even checking or debugging the configuration of a network is in itself a complex problem, and experience has shown that even minor faults can lead to substantial network downtimes. Moreover, predicting and understanding the interactions between network protocols and network components can be challenging. While there are many tools to support the troubleshooting process of sequential, parallel and even distributed programs there is much less support for troubleshooting from the network perspective.
A necessary complication of network troubleshooting is that the network components, and hence the potential sources of problems, are inherently distributed. Moreover, the input is not under the checker's control, and there may very complex interactions between software and hardware. Therefore, while it is possible to focus debugging efforts on individual components, e.g., particular network nodes or protocols, rather than the overall network, this necessarily does not solve distributed problems or problems occurring at another node or with respect to a protocol other than those upon which the checker has focused. Another challenge for network debugging is the problem of accurately differentiating between faults and abuse.